These functions are useful for implementing user-level context switching
between multiple threads of control within a process.
_mmmm_aaaa_kkkk_eeee_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt modifies the context specified by _u_c_p, which has been
initialized using _gggg_eeee_tttt_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt; when this context is resumed using
_ssss_wwww_aaaa_pppp_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt or _ssss_eeee_tttt_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt [see _gggg_eeee_tttt_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt(2)], program execution
continues by calling the function _f_u_n_c, passing it the arguments that
follow _a_r_g_c in the _mmmm_aaaa_kkkk_eeee_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt call. Before a call is made to
_mmmm_aaaa_kkkk_eeee_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt, the context being modified should have a stack allocated for
it. The integer value of _a_r_g_c must match the number of arguments that
follow _a_r_g_c. Otherwise the behavior is undefined.
The _uuuu_cccc______llll_iiii_nnnn_kkkk field is used to determine the context that will be resumed
when the context being modified by _mmmm_aaaa_kkkk_eeee_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt returns. The _uuuu_cccc______llll_iiii_nnnn_kkkk field
should be initialized prior to the call to _mmmm_aaaa_kkkk_eeee_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt.
_ssss_wwww_aaaa_pppp_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt saves the current context in the context structure pointed to
by _o_u_c_p and sets the context to the context structure pointed to by _u_c_p.
These functions will fail if either of the following is true:
_EEEE_NNNN_OOOO_MMMM_EEEE_MMMM _u_c_p does not have enough stack left to complete the
operation.
_EEEE_FFFF_AAAA_UUUU_LLLL_TTTT _u_c_p or _o_u_c_p points to an invalid address.